package cn.edu.zafu.bigdata.XuShuXin.Exp1112;

import java.io.BufferedWriter;
import java.io.FileReader;
import java.io.FileWriter;
import java.io.IOException;
import java.util.Scanner;

/**
 * @author: aluvfy
 * @description:
 * 题目3：追加文本并读取文件内容
 * 描述：
 * 编写一个程序，将用户输入的文本追加到第2题所写的文件中，并读取文件内容显示到控制台。若文件不存在，则创建新文件。
 * 具体要求：
 * 追加内容：创建一个方法appendToFile(String fileName, String content)，将用户输入的文本追加到指定文件中。
 *
 * 读取文件：创建一个方法readFile(String fileName)，读取文件内容并打印。
 *
 * 测试：在main方法中，提示用户输入文本，将其追加到文件，然后读取并显示文件内容。
 * @date: 2024/11/12 10:59
 */
public class AppendReadFile_xsx {
    public static void main(String[] args) {
        String fileName = "files/202211080124.txt";
        String content = "    No Hello, World, Xu Shuxin!";
        appendToFile(fileName, content);
        readFile(fileName);
    }

    public static void appendToFile(String fileName, String content) {
        FileWriter fileWriter = null;
        BufferedWriter bufferedWriter = null;
        try {
            fileWriter = new FileWriter(fileName, true);
            bufferedWriter = new BufferedWriter(fileWriter);
            bufferedWriter.newLine(); // 添加一个新行，以便追加的内容清晰可见
            bufferedWriter.write(content);
        } catch (IOException e) {
            System.err.println("An error occurred while appending to the file: " + e.getMessage());
        } finally {
            // 关闭文件写入和缓冲流
            try {
                if (bufferedWriter != null) {
                    bufferedWriter.close();
                }
                if (fileWriter != null) {
                    fileWriter.close();
                }
            } catch (IOException e) {
                System.err.println("An error occurred while closing the file: " + e.getMessage());
            }
        }
    }

    public static void readFile(String fileName) {
        try (FileReader fileReader = new FileReader(fileName);
             Scanner scanner = new Scanner(fileReader)) {
            while (scanner.hasNextLine()) {
                System.out.println(scanner.nextLine());
            }
        } catch (IOException e) {
            System.err.println("An error occurred while reading the file: " + e.getMessage());
        }
    }

}
